package com.HuiShou.common.utils;

import org.locationtech.spatial4j.context.SpatialContext;
import org.locationtech.spatial4j.distance.DistanceCalculator;
import org.locationtech.spatial4j.shape.Point;


public class LocationUtil {

    /**
     * 获取两点地理坐标的距离，单位是km
     * x1,y1表示当前经纬度
     * x2,y2表示餐厅的经纬度
     */
    public static Double getDistance(Double longitude1,Double latitude1,Double longitude2,Double latitude2){
        SpatialContext ctx = SpatialContext.GEO;
        // 使用简单的null检查替代BeanUtil.isEmpty，避免反射带来的问题
        if (longitude1 == null || latitude1 == null || longitude2 == null || latitude2 == null) {
            return null;
        }
        // 创建两个点（经纬度）
        Point store1 = ctx.getShapeFactory().pointXY(longitude1,latitude1);
        Point store2 = ctx.getShapeFactory().pointXY(longitude2, latitude2);
        // 计算两点之间的距离（公里）
        DistanceCalculator calculator = ctx.getDistCalc();
        return calculator.distance(store1, store2) * ctx.getWorldBounds().getMaxX();
    }
}
